<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=370098
-->
<head>
  <title>Test for Bug 370098</title>
  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>        
  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=370098">Mozilla Bug 370098</a>
<p id="display"></p>
<div id="content" style="display: none">
  
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
/** Test for Bug 370098 **/
function test_constructor(dom_proto, shouldthrow) {
    var threw = false;
    try {
        window[dom_proto]();
    } catch (e) {
        threw = true;
    }
    // XSLTProcessor is still on the old bindings.
    if (dom_proto != 'XSLTProcessor')
      ok(threw, "Calling |" + dom_proto + "()| should always throw");

    threw = false;
    try {
        new window[dom_proto]();
    } catch (e) {
        threw = true;
    }
    is(threw, shouldthrow, "Calling |new " + dom_proto + "()| should" + (shouldthrow ? " " : " not ") + "throw");
}
var dom_protos = [ "Element" ];
var dom_constructors = [ "Document", "Image", "DOMParser", "XMLSerializer",
  "XMLHttpRequest", "XPathEvaluator", "XSLTProcessor" ];
dom_protos.forEach(
  function(p) { test_constructor(p, true); });
dom_constructors.forEach(
  function(p) { test_constructor(p, false); });
</script>
</pre>
</body>
</html>

